package com.tom.demo.common.enumeration;

import lombok.Getter;

@Getter
public enum ExceptionEnum {

    /**
     * 成功段2000~2999
     */
    SUCCESS(2000,"操作成功"),
    LOGIN_USER_NOT_FIND(2001,"用户不存在"),
    LOGIN_USER_NOT_STATUS(2003,"用户被禁用,请联系管理员"),


    /**
     * 参数错误 5000~5999
     */
    SERVER_ERROR(5000,"服务器内部错误"),
    PARAM_REQUIRE(5003,"缺少参数"),
    PARAM_INVALID(5001,"无效参数"),
    PARAM_IMAGE_FORMAT_ERROR(5002,"图片格式有误"),

    /**
     * 登录段1~100
     */
    NEED_LOGIN(1,"需要登录后操作"),
    LOGIN_PASSWORD_ERROR(2,"用户名或者密码错误!"),

    /**
     * token令牌相关
     */
    TOKEN_INVALID(6000,"无效的TOKEN"),
    TOKEN_EXPIRE(6001,"TOKEN已过期"),
    TOKEN_REQUIRE(6002,"TOKEN是必须的"),

    /**
     * SIGN验签 100~199
     */
    SIGN_INVALID(100,"无效的SIGN"),
    SIG_TIMEOUT(101,"SIGN已过期"),


    /**
     * 数据错误 1000~2000
     */
    DATA_EXIST(1000,"数据已经存在"),
    AP_USER_DATA_NOT_EXIST(1001,"ApUser数据不存在"),
    DATA_NOT_EXIST(1002,"数据不存在"),

    /**
     * 权限相关 3000~3500
     */
    NO_OPERATOR_AUTH(3000,"无权限操作"),
    NEED_ADMIN(3001,"需要管理员权限");

    private final int code;
    private final String message;

    ExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 根据code查找对应的枚举对象，如果找不到则返回null。
     */
    public static ExceptionEnum fromCode(int code) {
        for (ExceptionEnum exceptionEnum : values()) {
            if (exceptionEnum.getCode() == code) {
                return exceptionEnum;
            }
        }
        return null; // 或者可以考虑抛出异常，表示没有匹配的枚举值
    }
}
